package com.gibs.peixunapi.service;

import com.gibs.peixunapi.VO.EditTestPaperVO;
import com.gibs.peixunapi.VO.SubjectHubVO;
import com.gibs.peixunapi.model.TestPaper;
import com.gibs.peixunapi.model.TestPaperSubject;
import com.gibs.peixunapi.result.Result;

import javax.validation.Valid;
import java.util.List;
import java.util.Map;

public interface TestPaperSubjectService {

    Result create(@Valid TestPaperSubject object);

    Result save(@Valid TestPaperSubject object);

    Result delete(Integer id);

    Result get(Integer id);

    Result getList(String key);

    Result getListPage(String key, Integer current, Integer limit);

    Result getOptions(String key);

    /**
     * 根据试卷id返回分类的map
     *
     * @param testPaperId 试卷id
     * @return Map key:题目分类 value:题目列表
     */
    Map<String, List<SubjectHubVO>> getMapByTestPaper(Integer testPaperId);

    /**
     * 更新试卷版本
     * 根据newTestPaperVO 与 oldSubjectHubVOList 进行对比更新需要的题目
     * 并且新增新的一版试卷(不影响已完成的考试中的答卷数据)
     *
     * @param oldSubjectHubVOList 数据库中的试卷题目列表
     * @param newTestPaperVO      需要更新的试卷题目列表
     * @return 新增成功的试卷实体类
     */
    TestPaper switchTestPaperSubject(List<SubjectHubVO> oldSubjectHubVOList, EditTestPaperVO newTestPaperVO);

    Result updateTestPaperSubject(List<SubjectHubVO> oldSubjectHubVOList, EditTestPaperVO newTestPaperVO);
}

